//#pragma once
//
//struct ID3D11Device;
//
//struct ID3D11RasterizerState;
//struct ID3D11DepthStencilState;
//struct ID3D11BlendState;
//struct ID3D11SamplerState;
//
//struct D3D11_RASTERIZER_DESC;
//struct D3D11_DEPTH_STENCIL_DESC;
//struct D3D11_BLEND_DESC;
//struct D3D11_SAMPLER_DESC;
//
//using namespace std;
//
//#define MGFX_RS_NO_CULLING "MGFX_RS_NO_CULLING"
//
//#define MGFX_BS_DISABLE_FRAMEBUFFER "MGFX_BS_DISABLE_FRAMEBUFFER"
//
//#define MGFX_DSS_TWO_SIDED_STENCIL "MGFX_DSS_TWO_SIDED_STENCIL"
//#define MGFX_DSS_AFTER_SHADOW_VOLUME_STENCIL "MGFX_DSS_AFTER_SHADOW_VOLUME_STENCIL"
//
//#define MGFX_SS_TRILINEAR_WRAP "MGFX_SS_TRILINEAR_WRAP"
//
//namespace mgfx
//{
//	typedef int DeviceStateID;
//
//	static const DeviceStateID STATE_RS_NO_CULLING                   = 0;
//	static const DeviceStateID STATE_BS_DISABLE_FRAMEBUFFER          = 1;
//	static const DeviceStateID STATE_DSS_TWO_SIDED_STENCIL           = 2;
//	static const DeviceStateID STATE_DSS_AFTER_SHADOW_VOLUME_STENCIL = 3;
//	static const DeviceStateID STATE_SS_TRILINEAR_WRAP               = 4;
//
//	static const DeviceStateID STATE_MAX_DEFINED_ID                  = 5;
//
//	class StateManager
//	{
//	public:
//		ID3D11RasterizerState * createRasterizerState(const string & key, D3D10_RASTERIZER_DESC * desc);
//		ID3D11RasterizerState * getRasterizerState(const string & key);
//
//		ID3D11DepthStencilState * createDepthStencilState(const string & key, D3D10_DEPTH_STENCIL_DESC * desc);
//		ID3D11DepthStencilState * getDepthStencilState(const string & key);
//
//		ID3D11BlendState * createBlendState(const string & key, D3D10_BLEND_DESC * desc);
//		ID3D11BlendState * getBlendState(const string & key);
//
//		ID3D11SamplerState * createSamplerState(const string & key, D3D10_SAMPLER_DESC * desc);
//		ID3D11SamplerState * getSamplerState(const string & key);
//
//		void init(ID3D10Device* device);
//		void deinit();
//
//	private:
//		ID3D10Device * mDevice;
//
//		typedef map<int, ID3D10RasterizerState*> RSMap;
//		RSMap mRasterizerStates;
//
//		typedef map<int, ID3D10DepthStencilState*> DSSMap;
//		DSSMap mDepthStencilStates;
//
//		typedef map<int, ID3D10BlendState*> BSMap;
//		BSMap mBlendStates;
//
//		typedef map<int, ID3D10SamplerState*> SSMap;
//		SSMap mSamplerStates;
//	};
//
//}
